Add a GetInterfaces method
authorMatthias Clasen <mclasen@redhat.com>
Sat, 10 Oct 2020 03:32:36 +0000 (23:32 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 12 Oct 2020 19:10:40 +0000 (15:10 -0400)
It turns out that accerciser depends on this undocumented
method that is not in the xml at all, otherwise interface
sections in the accerciser ui never get enabled.

gtk/a11y/atspi/Accessible.xml
gtk/a11y/gtkatspicontext.c
gtk/a11y/gtkatspiroot.c

index 70154660603b74332caeb3a88a7f7a3f86a3eec6..a274cdb902b92ae03a6c7f018c936e6d13e46b56 100644 (file)
@@ -63,5 +63,9 @@
     <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiObjectReference"/>
   </method>
 
+  <method name="GetInterfaces">
+    <arg direction="out" type="as"/>
+  </method>
+
 </interface>
 </node>
index 1567a665d24d6496830fc462e3626d6462e3d401..0960962a9a8655e5ec0cdad9eb8ef8675577082c 100644 (file)
@@ -28,6 +28,7 @@
 #include "gtkatspiutilsprivate.h"
 
 #include "a11y/atspi/atspi-accessible.h"
+#include "a11y/atspi/atspi-text.h"
 
 #include "gtkdebug.h"
 #include "gtkwindow.h"
@@ -371,6 +372,15 @@ handle_accessible_method (GDBusConnection       *connection,
 
       g_dbus_method_invocation_return_value (invocation, g_variant_new ("(i)", idx));
     }
+  else if (g_strcmp0 (method_name, "GetInterfaces") == 0)
+    {
+      GtkAccessible *accessible = gtk_at_context_get_accessible (GTK_AT_CONTEXT (self));
+      GVariantBuilder builder = G_VARIANT_BUILDER_INIT (G_VARIANT_TYPE ("as"));
+
+      g_variant_builder_add (&builder, "s", "org.a11y.atspi.Accessible");
+      g_dbus_method_invocation_return_value (invocation, g_variant_new ("(as)", &builder));
+    }
+
 }
 
 static GVariant *
index 9d93de27f9223b262ce1e023178b75c5ec3fd1cc..5e74bf6d46d12beea0f5d0fb3e0a002b15528889 100644 (file)
@@ -331,6 +331,14 @@ handle_accessible_method (GDBusConnection       *connection,
     {
       g_dbus_method_invocation_return_value (invocation, g_variant_new ("(i)", -1));
     }
+  else if (g_strcmp0 (method_name, "GetInterfaces") == 0)
+    {
+      GVariantBuilder builder = G_VARIANT_BUILDER_INIT (G_VARIANT_TYPE ("as"));
+
+      g_variant_builder_add (&builder, "s", "org.a11y.atspi.Accessible");
+      g_variant_builder_add (&builder, "s", "org.a11y.atspi.Application");
+      g_dbus_method_invocation_return_value (invocation, g_variant_new ("(as)", &builder));
+    }
 }
 
 static GVariant *